﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Poligas_ERP.Classes;
using ModeloDesenvolvimento;

/*ESCRITO EM 05/01/2012*/
namespace Poligas_ERP.Forms
{
    public partial class FrmUsuarios : Form
    {
        DataTable dtUsuarios = new DataTable();
        DataTable dtRetorno = new DataTable();
        DataTable dtSituacoes = new DataTable();
        
        Usuarios usuario = new Usuarios();
        Util util = new Util();
        int idUsuario = 0;
        int idSituacao = 0;

        public FrmUsuarios()
        {
            InitializeComponent();
        }

        private void FrmUsuarios_Load(object sender, EventArgs e)
        {
            dgvUsuarios.AutoGenerateColumns = false;
            HabilitarControlesIniciais(true);
            LimparCampos();
            LocalizarDados();
            txtPesquisar.Focus();
            CarregarSituacoes();

        }
        private void FrmUsuarios_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Return)
            {
                SendKeys.Send("{TAB}");
            }
        }
        private void FrmUsuarios_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(e.KeyChar == (char)13)
            {
                e.Handled = true;
            }
        }
        private void dgvUsuarios_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if(dgvUsuarios.CurrentRow != null)
                RecuperarDadosPorCodigo();
        }
        private void txtPesquisar_TextChanged(object sender, EventArgs e)
        {
            LocalizarDados();
        }

        private void CarregarSituacoes()
        {
            dtSituacoes = usuario.CarregaSituacoes();

            if(dtSituacoes.Rows.Count > 0)
            {
                cmbSituacao.DataSource = dtSituacoes;
                cmbSituacao.DisplayMember = "Descricao";
                cmbSituacao.ValueMember = "CodSituacao";
            }

        }
        private void LocalizarDados()
        {
            dgvUsuarios.DataSource = usuario.LocalizarDados(txtPesquisar.Text);

            btnEditar.Enabled = dgvUsuarios.Rows.Count > 0;
            btnExcluir.Enabled = btnEditar.Enabled;

            RecuperarDadosPorCodigo();
        }
        private void RecuperarDadosPorCodigo()
        {
            if(dgvUsuarios.CurrentRow != null)
            {
                Int32 CodUsuario = Convert.ToInt32(dgvUsuarios.SelectedRows[0].Cells[0].Value);
                dtRetorno = usuario.RecuperaDadosPorCodigo(CodUsuario);


                if(dtRetorno.Rows.Count > 0)
                {
                    idUsuario = Convert.ToInt32(dtRetorno.Rows[0]["CodUsuario"]);
                    txtCodigo.Text = Convert.ToString(idUsuario);
                    cmbSituacao.SelectedValue = dtRetorno.Rows[0]["CodSituacao"].ToString();
                    txtNome.Text = dtRetorno.Rows[0]["Nome"].ToString();
                    txtUsuario.Text = dtRetorno.Rows[0]["Usuario"].ToString();
                    txtSenha.Text = dtRetorno.Rows[0]["Senha"].ToString();
                    txtNivel.Text = dtRetorno.Rows[0]["Nivel"].ToString();
                }
            }
            dtRetorno = null;
        }
        private void LimparCampos()
        {
            txtPesquisar.Clear();
            txtCodigo.Clear();
            txtNome.Clear();
            txtUsuario.Clear();
            txtSenha.Clear();
            txtNivel.Clear();
            cmbSituacao.SelectedIndex = -1;
        }
        private void HabilitarControlesIniciais(bool status)
        {
            gbxGrid.Enabled = status;
            gbxDados.Enabled = !status;
            HabilitarBotoes(status);
        }
        private void HabilitarBotoes(bool status)
        {
            btnNovo.Enabled = status;
            btnEditar.Enabled = status;
            btnExcluir.Enabled = status;
            btnGravar.Enabled = !status;
            btnCancelar.Enabled = !status;
        }


        private void btnNovo_Click(object sender, EventArgs e)
        {
            LimparCampos();
            HabilitarControlesIniciais(false);
            txtNome.Focus();
        }
        private void btnEditar_Click(object sender, EventArgs e)
        {
            HabilitarControlesIniciais(false);
            txtNome.Focus();
        }
        private void btnGravar_Click(object sender, EventArgs e)
        {
            if(string.IsNullOrEmpty(txtCodigo.Text.Trim()))
            {
                idSituacao = Convert.ToInt32(cmbSituacao.SelectedValue.ToString());
                if(usuario.Inserir(idSituacao, txtNome.Text, txtUsuario.Text, txtSenha.Text, Convert.ToInt32(txtNivel.Text))==false)
                {
                    util.Aviso("Registro Incluido com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao Incluir Registro");
                }

            }
            else
            {

                Int32 CodUsuario = Convert.ToInt32(dgvUsuarios.SelectedRows[0].Cells[0].Value);

                if(usuario.Atualizar(CodUsuario, idSituacao, txtNome.Text, txtUsuario.Text, txtSenha.Text, Convert.ToInt32(txtNivel.Text))==false)
                {
                    util.Aviso("Registro Alterado com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao Alterar Registro");
                }
            }

            HabilitarControlesIniciais(true);
            LimparCampos();
            LocalizarDados();
        }
        private void btnExcluir_Click(object sender, EventArgs e)
        {
            idUsuario = Convert.ToInt32(dgvUsuarios.SelectedRows[0].Cells[0].Value);

            string pergunta = "Deseja Excluir o Registro?";

            if(idUsuario <= 0)
            {
                util.Aviso("Selecione um arquivo para Exclusão");
                return;
            }

            if(util.Decide(pergunta, true))
            {
                Int32 CodUsuario = idUsuario; //Convert.ToInt32(dgvClientes.SelectedRows[0].Cells[0].Value);

                if(usuario.Excluir(CodUsuario))
                    util.Aviso("Arquivo Excluido com Sucesso");
                else
                    util.Aviso("Erro ao Excluir");
            }

            LimparCampos();
            LocalizarDados();
        }
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimparCampos();
            HabilitarControlesIniciais(true);
            LocalizarDados();
        }
    }
}
